From 69a5b3af94c0e3b11ca0360ec846c5c8a8187580 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Thu, 15 Dec 2011 18:49:16 +0100 Subject: [PATCH] menuitem: cleanup arrow-spacing fetch code Refactor get_arrow_size() to return the spacing as well, since basically we always need both. --- gtk/gtkmenuitem.c | 48 +++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 3aeb1aa48c..727c7d624a 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -674,20 +674,26 @@ gtk_menu_item_detacher (GtkWidget *widget, static void get_arrow_size (GtkWidget *widget, GtkWidget *child, - gint *size) + gint *size, + gint *spacing) { GtkStyleContext *style_context; GtkStateFlags state; PangoContext *context; PangoFontMetrics *metrics; gfloat arrow_scaling; + gint arrow_spacing; g_assert (size); gtk_widget_style_get (widget, "arrow-scaling", &arrow_scaling, + "arrow-spacing", &arrow_spacing, NULL); + if (spacing != NULL) + *spacing = arrow_spacing; + context = gtk_widget_get_pango_context (child); style_context = gtk_widget_get_style_context (child); state = gtk_widget_get_state_flags (child); @@ -816,20 +822,9 @@ gtk_menu_item_get_preferred_width (GtkWidget *widget, if ((menu_item->priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { - guint arrow_spacing; - gint arrow_size; - - gtk_widget_style_get (widget, - "arrow-spacing", &arrow_spacing, - NULL); - - get_arrow_size (widget, child, &arrow_size); - - gtk_widget_style_get (widget, - "arrow-spacing", &arrow_spacing, - NULL); + gint arrow_spacing, arrow_size; - get_arrow_size (widget, child, &arrow_size); + get_arrow_size (widget, child, &arrow_size, &arrow_spacing); min_width += arrow_size; min_width += arrow_spacing; @@ -925,22 +920,14 @@ gtk_menu_item_real_get_height (GtkWidget *widget, if (child != NULL && gtk_widget_get_visible (child)) { gint child_min, child_nat; - gint arrow_size = 0; - guint arrow_spacing = 0; + gint arrow_size = 0, arrow_spacing = 0; if ((priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) - { - gtk_widget_style_get (widget, - "arrow-spacing", &arrow_spacing, - NULL); - get_arrow_size (widget, child, &arrow_size); - } + get_arrow_size (widget, child, &arrow_size, &arrow_spacing); if (for_size != -1) { - avail_size -= arrow_size; - avail_size -= arrow_spacing; - + avail_size -= (arrow_size + arrow_spacing); gtk_widget_get_preferred_height_for_width (child, avail_size, &child_min, @@ -1475,14 +1462,9 @@ gtk_menu_item_size_allocate (GtkWidget *widget, if ((priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { - guint arrow_spacing; - gint arrow_size; - - gtk_widget_style_get (widget, - "arrow-spacing", &arrow_spacing, - NULL); + gint arrow_spacing, arrow_size; - get_arrow_size (widget, child, &arrow_size); + get_arrow_size (widget, child, &arrow_size, &arrow_spacing); if (direction == GTK_TEXT_DIR_RTL) child_allocation.x += arrow_size + arrow_spacing; @@ -1649,7 +1631,7 @@ gtk_menu_item_draw (GtkWidget *widget, "horizontal-padding", &horizontal_padding, NULL); - get_arrow_size (widget, child, &arrow_size); + get_arrow_size (widget, child, &arrow_size, NULL); if (direction == GTK_TEXT_DIR_LTR) { -- 2.30.2